/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package iTraceMD.impl;

import iTraceMD.AbstractionLevel;
import iTraceMD.Aspect;
import iTraceMD.ElementTraceLink;
import iTraceMD.ITraceMDFactory;
import iTraceMD.ITraceMDPackage;
import iTraceMD.LinkMode;
import iTraceMD.RelationType;
import iTraceMD.TechnicalBinding;
import iTraceMD.TransformationType;
import iTraceMD.TypeLink;
import iTraceMD.iTraceMDModel;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;

import org.eclipse.emf.ecore.impl.EPackageImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class ITraceMDPackageImpl extends EPackageImpl implements ITraceMDPackage {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass iTraceMDModelEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass elementTraceLinkEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum relationTypeEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum typeLinkEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum transformationTypeEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum linkModeEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum technicalBindingEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum abstractionLevelEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum aspectEEnum = null;

	/**
	 * Creates an instance of the model <b>Package</b>, registered with
	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
	 * package URI value.
	 * <p>Note: the correct way to create the package is via the static
	 * factory method {@link #init init()}, which also performs
	 * initialization of the package, or returns the registered package,
	 * if one already exists.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.emf.ecore.EPackage.Registry
	 * @see iTraceMD.ITraceMDPackage#eNS_URI
	 * @see #init()
	 * @generated
	 */
	private ITraceMDPackageImpl() {
		super(eNS_URI, ITraceMDFactory.eINSTANCE);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private static boolean isInited = false;

	/**
	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
	 * 
	 * <p>This method is used to initialize {@link ITraceMDPackage#eINSTANCE} when that field is accessed.
	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #eNS_URI
	 * @see #createPackageContents()
	 * @see #initializePackageContents()
	 * @generated
	 */
	public static ITraceMDPackage init() {
		if (isInited) return (ITraceMDPackage)EPackage.Registry.INSTANCE.getEPackage(ITraceMDPackage.eNS_URI);

		// Obtain or create and register package
		ITraceMDPackageImpl theITraceMDPackage = (ITraceMDPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ITraceMDPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ITraceMDPackageImpl());

		isInited = true;

		// Create package meta-data objects
		theITraceMDPackage.createPackageContents();

		// Initialize created meta-data
		theITraceMDPackage.initializePackageContents();

		// Mark meta-data to indicate it can't be changed
		theITraceMDPackage.freeze();

  
		// Update the registry and return the package
		EPackage.Registry.INSTANCE.put(ITraceMDPackage.eNS_URI, theITraceMDPackage);
		return theITraceMDPackage;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getiTraceMDModel() {
		return iTraceMDModelEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getiTraceMDModel_Composes() {
		return (EReference)iTraceMDModelEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getElementTraceLink() {
		return elementTraceLinkEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_NameModelTrace() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_Version() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_CreatedOn() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_Mode() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_Comment() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_TechnicalBinding() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_TypeLink() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_RelationType() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_ModelName() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_AbstractionLevel() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_Metamodel() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(10);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_Aspect() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(11);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_RuleName() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(12);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_CreatedBy() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(13);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_TransformationType() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(14);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getElementTraceLink_Belongs() {
		return (EReference)elementTraceLinkEClass.getEStructuralFeatures().get(15);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getElementTraceLink_Ref() {
		return (EReference)elementTraceLinkEClass.getEStructuralFeatures().get(16);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_TraceLink() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(17);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getElementTraceLink_Element() {
		return (EAttribute)elementTraceLinkEClass.getEStructuralFeatures().get(18);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getRelationType() {
		return relationTypeEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getTypeLink() {
		return typeLinkEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getTransformationType() {
		return transformationTypeEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getLinkMode() {
		return linkModeEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getTechnicalBinding() {
		return technicalBindingEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getAbstractionLevel() {
		return abstractionLevelEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getAspect() {
		return aspectEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ITraceMDFactory getITraceMDFactory() {
		return (ITraceMDFactory)getEFactoryInstance();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isCreated = false;

	/**
	 * Creates the meta-model objects for the package.  This method is
	 * guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void createPackageContents() {
		if (isCreated) return;
		isCreated = true;

		// Create classes and their features
		iTraceMDModelEClass = createEClass(ITRACE_MD_MODEL);
		createEReference(iTraceMDModelEClass, ITRACE_MD_MODEL__COMPOSES);

		elementTraceLinkEClass = createEClass(ELEMENT_TRACE_LINK);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__NAME_MODEL_TRACE);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__VERSION);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__CREATED_ON);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__MODE);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__COMMENT);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__TECHNICAL_BINDING);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__TYPE_LINK);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__RELATION_TYPE);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__MODEL_NAME);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__ABSTRACTION_LEVEL);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__METAMODEL);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__ASPECT);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__RULE_NAME);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__CREATED_BY);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__TRANSFORMATION_TYPE);
		createEReference(elementTraceLinkEClass, ELEMENT_TRACE_LINK__BELONGS);
		createEReference(elementTraceLinkEClass, ELEMENT_TRACE_LINK__REF);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__TRACE_LINK);
		createEAttribute(elementTraceLinkEClass, ELEMENT_TRACE_LINK__ELEMENT);

		// Create enums
		relationTypeEEnum = createEEnum(RELATION_TYPE);
		typeLinkEEnum = createEEnum(TYPE_LINK);
		transformationTypeEEnum = createEEnum(TRANSFORMATION_TYPE);
		linkModeEEnum = createEEnum(LINK_MODE);
		technicalBindingEEnum = createEEnum(TECHNICAL_BINDING);
		abstractionLevelEEnum = createEEnum(ABSTRACTION_LEVEL);
		aspectEEnum = createEEnum(ASPECT);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isInitialized = false;

	/**
	 * Complete the initialization of the package and its meta-model.  This
	 * method is guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void initializePackageContents() {
		if (isInitialized) return;
		isInitialized = true;

		// Initialize package
		setName(eNAME);
		setNsPrefix(eNS_PREFIX);
		setNsURI(eNS_URI);

		// Create type parameters

		// Set bounds for type parameters

		// Add supertypes to classes

		// Initialize classes and features; add operations and parameters
		initEClass(iTraceMDModelEClass, iTraceMDModel.class, "iTraceMDModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getiTraceMDModel_Composes(), this.getElementTraceLink(), this.getElementTraceLink_Belongs(), "composes", null, 0, -1, iTraceMDModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(elementTraceLinkEClass, ElementTraceLink.class, "ElementTraceLink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getElementTraceLink_NameModelTrace(), ecorePackage.getEString(), "nameModelTrace", null, 1, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElementTraceLink_Version(), ecorePackage.getEInt(), "version", null, 1, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElementTraceLink_CreatedOn(), ecorePackage.getEString(), "createdOn", null, 1, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElementTraceLink_Mode(), this.getLinkMode(), "mode", null, 1, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElementTraceLink_Comment(), ecorePackage.getEString(), "comment", null, 0, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElementTraceLink_TechnicalBinding(), this.getTechnicalBinding(), "technicalBinding", null, 1, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElementTraceLink_TypeLink(), this.getTypeLink(), "typeLink", null, 1, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElementTraceLink_RelationType(), this.getRelationType(), "relationType", null, 1, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElementTraceLink_ModelName(), ecorePackage.getEString(), "modelName", null, 1, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElementTraceLink_AbstractionLevel(), this.getAbstractionLevel(), "abstractionLevel", null, 1, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElementTraceLink_Metamodel(), ecorePackage.getEBoolean(), "metamodel", null, 1, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElementTraceLink_Aspect(), this.getAspect(), "aspect", null, 1, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElementTraceLink_RuleName(), ecorePackage.getEString(), "ruleName", null, 0, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElementTraceLink_CreatedBy(), ecorePackage.getEString(), "createdBy", null, 0, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElementTraceLink_TransformationType(), this.getTransformationType(), "transformationType", null, 0, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getElementTraceLink_Belongs(), this.getiTraceMDModel(), this.getiTraceMDModel_Composes(), "belongs", null, 1, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getElementTraceLink_Ref(), ecorePackage.getEObject(), null, "ref", null, 1, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElementTraceLink_TraceLink(), ecorePackage.getEString(), "traceLink", null, 1, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getElementTraceLink_Element(), ecorePackage.getEString(), "element", null, 1, 1, ElementTraceLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		// Initialize enums and add enum literals
		initEEnum(relationTypeEEnum, RelationType.class, "RelationType");
		addEEnumLiteral(relationTypeEEnum, RelationType.SOURCE);
		addEEnumLiteral(relationTypeEEnum, RelationType.TARGET);

		initEEnum(typeLinkEEnum, TypeLink.class, "TypeLink");
		addEEnumLiteral(typeLinkEEnum, TypeLink.TRANSFORMATION);
		addEEnumLiteral(typeLinkEEnum, TypeLink.ANOTATION);

		initEEnum(transformationTypeEEnum, TransformationType.class, "TransformationType");
		addEEnumLiteral(transformationTypeEEnum, TransformationType.M2M);
		addEEnumLiteral(transformationTypeEEnum, TransformationType.M2T);

		initEEnum(linkModeEEnum, LinkMode.class, "LinkMode");
		addEEnumLiteral(linkModeEEnum, LinkMode.MANUAL);
		addEEnumLiteral(linkModeEEnum, LinkMode.AUTOMATIC);

		initEEnum(technicalBindingEEnum, TechnicalBinding.class, "TechnicalBinding");
		addEEnumLiteral(technicalBindingEEnum, TechnicalBinding.ATL);
		addEEnumLiteral(technicalBindingEEnum, TechnicalBinding.AMW);
		addEEnumLiteral(technicalBindingEEnum, TechnicalBinding.MOF_SCRIPT);
		addEEnumLiteral(technicalBindingEEnum, TechnicalBinding.OTHER);

		initEEnum(abstractionLevelEEnum, AbstractionLevel.class, "AbstractionLevel");
		addEEnumLiteral(abstractionLevelEEnum, AbstractionLevel.CIM);
		addEEnumLiteral(abstractionLevelEEnum, AbstractionLevel.PIM);
		addEEnumLiteral(abstractionLevelEEnum, AbstractionLevel.PSM);
		addEEnumLiteral(abstractionLevelEEnum, AbstractionLevel.PDM);

		initEEnum(aspectEEnum, Aspect.class, "Aspect");
		addEEnumLiteral(aspectEEnum, Aspect.INTERFACE);
		addEEnumLiteral(aspectEEnum, Aspect.CONTENT);
		addEEnumLiteral(aspectEEnum, Aspect.BEHAVIOUR);
		addEEnumLiteral(aspectEEnum, Aspect.QUALITY);
		addEEnumLiteral(aspectEEnum, Aspect.SEMANTICS);
		addEEnumLiteral(aspectEEnum, Aspect.ARCHITECTURE);

		// Create resource
		createResource(eNS_URI);
	}

} //ITraceMDPackageImpl
